Const ALTO As Integer = 370
Const ANCHO As Integer = 370

Private Sub btnPathIni_Click()
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = tbPathIni.Text
        .Show()
        If .SelectedItems.Count > 0 Then
            tbPathIni.Text = .SelectedItems(1)
        End If
    End With
End Sub

Private Sub btnSalir_Click()
    Unload(Me)
End Sub

Private Sub btnBuscar_Click()
    Dim Fso As FileSystemObject
    Dim directorio As Folder

    DoEvents()
    lbFiles.Clear()

    Fso = New FileSystemObject
    directorio = Fso.GetFolder(tbPathIni.Text)
    Call expande(directorio)
    ' Seleccionamos el primer elemento
    If lbFiles.ListCount > 0 Then
        lbFiles.Selected(0) = True
    End If
End Sub

Private Sub expande(ByVal directorio As Folder)
    On Error GoTo salir
    Dim agregar As Boolean

    Dim fichero As file
    For Each fichero In directorio.Files
        Dim tipo As Integer
        tipo = Xtension(fichero)
        Dim partes As Object
        partes = Split(fichero, ".")
        Dim extension As String
        extension = partes(UBound(partes))
        agregar = False
        If cbImagenes.Value = True And tipo = 1 Then
            agregar = True
        ElseIf cbSonidos.Value = True And tipo = 2 Then
            agregar = True
        ElseIf cbTextos.Value = True And tipo = 3 Then
            agregar = True
        ElseIf cbTextos.Value = True And tipo = 4 Then
            agregar = True
        End If
        If agregar Then
            lbFiles.AddItem(directorio.path & "\" & fichero.Name)
        End If
    Next
    Dim Subdirectorio As Folder
    For Each Subdirectorio In directorio.SubFolders
        Call expande(Subdirectorio)
    Next
    Exit Sub
salir:
End Sub

Private Sub lbFiles_Click()
    On Error GoTo salir

    Dim ruta As String
    ruta = lbFiles.List(lbFiles.ListIndex)
    img.Visible = False
    acpdf1.Visible = False
    WB1.Visible = False
    wm1.Visible = False

    wm1.URL = ""
    wm1.Controls.stop()
    wm1.Visible = False

    Dim tipo As Integer
    tipo = Xtension(ruta)
    Select Case tipo
        Case 1 ' Imagen
            img.Visible = True
            img.Picture = LoadPicture("")
            img.Picture = LoadPicture(ruta)
        Case 2 ' Audio / Video
            wm1.URL = ruta
            wm1.Height = ALTO
            wm1.Width = ANCHO
            wm1.Visible = True
        Case 3 ' pdf
            acpdf1.Visible = True
            acpdf1.src = ruta
            acpdf1.gotoFirstPage()
            acpdf1.SetFocus()
        Case 4 ' html / txt / xml
            WB1.Visible = True
            WB1.Navigate(ruta)
        Case Else ' Otros
    End Select
    lbFiles.SetFocus()
    Exit Sub
salir:
End Sub

Function Xtension(ByVal ruta As String) As Integer

    Dim partes As Object
    partes = Split(ruta, ".")
    Dim extension As String
    extension = partes(UBound(partes))
    If extension = "jpg" Or extension = "gif" Or extension = "bmp" Then
        Xtension = 1 ' Imagen
    ElseIf extension = "mp3" Or extension = "wav" Or extension = "avi" Or extension = "mpg" Then
        Xtension = 2 ' Audio/Video
    ElseIf extension = "pdf" Then
        Xtension = 3 ' pdf
    ElseIf extension = "html" Or extension = "htm" Or extension = "txt" Or extension = "xml" Then
        Xtension = 4 ' html / txt / xml
    Else
        Xtension = 0 'Otras
    End If
End Function

Private Sub opClip_Click()
    If lbFiles.ListIndex <> -1 Then
        Select Case Xtension(lbFiles.List(lbFiles.ListIndex))
            Case 1 ' Imagen
                img.PictureSizeMode = fmPictureSizeModeClip
            Case 2 ' Audio / Video
                wm1.stretchToFit = True
            Case Else ' Otros
        End Select
    End If
End Sub

Private Sub opStrech_Click()
    If lbFiles.ListIndex <> -1 Then
        Select Case Xtension(lbFiles.List(lbFiles.ListIndex))
            Case 1 ' Imagen
                img.PictureSizeMode = fmPictureSizeModeStretch
            Case 2 ' Audio / Video
                wm1.stretchToFit = True
            Case Else ' Otros
        End Select
    End If
End Sub

Private Sub opZoom_Click()
    If lbFiles.ListIndex <> -1 Then
        Select Case Xtension(lbFiles.List(lbFiles.ListIndex))
            Case 1 ' Imagen
                img.PictureSizeMode = fmPictureSizeModeZoom
            Case 2 ' Audio / Video
                wm1.stretchToFit = True
            Case Else ' Otros
        End Select
    End If
End Sub

Private Sub UserForm_Initialize()
    tbPathIni.Text = "C:\Users\Juanto\Pictures"
    tbPathIni.Text = "C:\Temp"
    cbImagenes.Value = True
    cbSonidos.Value = True
    cbTextos.Value = False
    btnBuscar.Default = True
    img.Visible = False
    wm1.Visible = False
    acpdf1.Visible = False
    opClip.Value = True
End Sub
